<template>
	<view class="goodCate">
		<!-- <view>
			<scroll-view scroll-y="true" class="scroll-Y"> -->
		<view class="header acea-row row-center-wrapper">
			<navigator open-type="switchTab" url='/pages/index/index' class="pageIndex" hover-class="none"
				@click="jumpIndex">
				<text class="iconfont icon-shouye3"></text>
			</navigator>
			<navigator url="/pages/goods/goods_search/index" class="search acea-row row-center-wrapper"
				hover-class="none">
				<text class="iconfont icon-xiazai5"></text>
				{{$t(`搜索商品名称`)}}
			</navigator>
		</view>
		<view class="conter">
      <!-- 商品分类（左侧） -->
      <view class='aside'>
				<scroll-view scroll-y="true" scroll-with-animation='true' style="height: calc(100% - 100rpx)">
					<view class='item acea-row row-center-wrapper' :class='index===navActive?"on":""'
						v-for="(item,index) in categoryList" :key="index" @click="tapNav(index,item)">
						<text>{{$t(item.name)}}</text>
					</view>
				</scroll-view>
			</view>
      <view class="wrapper">
        <!-- 商品分类（上边） -->
        <view class="bgcolor" v-if="iSlong">
					<view class="longTab acea-row row-middle">
						<scroll-view scroll-x="true" style="white-space: nowrap; display: flex;height:44rpx;"
							scroll-with-animation :scroll-left="tabLeft" show-scrollbar="true">
							<view class="longItem" :style='"width:"+isWidth+"px"' :class="index===tabClick?'click':''"
								v-for="(item,index) in categoryErList" :key="index" @click="longClick(index)">
								{{$t(item.name)}}
							</view>
						</scroll-view>
					</view>
					<view class="openList" @click="openTap"><text class="iconfont icon-xiala"></text></view>
				</view>
				<view v-else>
					<view class="downTab">
						<view class="title acea-row row-between-wrapper">
							<view>{{categoryTitle}}</view>
							<view class="closeList" @click="closeTap"><text class="iconfont icon-xiala"></text>
							</view>
						</view>
						<view class="children">
							<view class="acea-row row-middle">
								<view class="item line1" :class="index===tabClick?'click':''"
									v-for="(item,index) in categoryErList" :key="index" @click="longClick(index)">
									{{$t(item.name)}}
								</view>
							</view>
						</view>
					</view>
					<view class="mask" @click="closeTap"></view>
				</view>
        <!-- 商品列表 -->
				<goodList
          ref="d_goodClass"
          :tempArr="tempArr"
          :cartCountMap="cartCountMap"
          :isLogin="isLogin"
          @gocartduo="goCartDuo"
					@gocartdan="goCartDan"
          @ChangeCartNumDan="ChangeCartNumDan"
          @detail="goDetail"
        />
				<view class='loadingicon acea-row row-center-wrapper'>
					<text class='loading iconfont icon-jiazai' :hidden='loading===false'></text>{{loadTitle}}
				</view>
			</view>
		</view>
    <!-- 购物车 -->
    <view class="footer acea-row row-between-wrapper">
			<view class="cartIcon acea-row row-center-wrapper" @click="getCartList(0)" v-if="cartData.cartList.length">
				<view class="iconfont icon-gouwuche-yangshi2"></view>
				<view class="num">{{cartCount}}</view>
			</view>
			<view class="cartIcon acea-row row-center-wrapper noCart" v-else>
				<view class="iconfont icon-gouwuche-yangshi2"></view>
			</view>
			<view class="money acea-row row-middle">
				<view>{{$t(`￥`)}}<text class="num">{{(totalPrice / 100.0).toFixed(2)}}</text></view>
				<view class="bnt" @click="subOrder">{{$t(`去付款`)}}</view>
			</view>
		</view>
		<cartList
      :cartData="cartData"
      @closeList="closeList"
      @ChangeCartNumDan="ChangeCartList"
			@ChangeSubDel="ChangeSubDel"
      @ChangeOneDel="ChangeOneDel"/>
		<productWindow
      :attr="attr"
      :isShow='1'
      :iSplus='1'
      :iScart='1'
      @myevent="onMyEvent"
      @ChangeAttr="ChangeAttr"
			@ChangeCartNum="ChangeCartNumDuo"
      @attrVal="attrVal"
      @iptCartNum="iptCartNum"
      @goCat="goCatNum"
			id='product-window'
      :is_vip="is_vip" />
		<!-- </scroll-view>
		</view> -->
	</view>
</template>

<script>
  import * as ProductCategoryApi from '@/api/product/category.js';
  import * as ProductSpuApi from '@/api/product/spu.js'
  import * as TradeCartApi from '@/api/trade/cart.js';
  import { handleTree } from '@/utils/tree.js';
  import productWindow from '@/components/productWindow';
	import goodList from '@/components/d_goodList';
	import cartList from '@/components/cartList';
	import { mapGetters } from 'vuex';
	import { goShopDetail } from '@/libs/order.js';
	import { toLogin } from '@/libs/login.js';
  import { convertProductPropertyList, convertProductSkuMap } from "@/utils/util.js"
  export default {
		props: {
			isNew: {
				type: Boolean,
				default: false
			}
		},
		watch: {
			isNew(newVal) {
				this.getAllCategory(1);
			}
		},
		computed: mapGetters(['isLogin', 'uid']),
		components: {
			productWindow,
			goodList,
			cartList
		},
		data() {
			return {
				categoryList: [],
				navActive: 0,
				categoryTitle: '',
				categoryErList: [],
				tabLeft: 0,
				isWidth: 0, //每个导航栏占位
				tabClick: 0, //导航栏被点击
				iSlong: true,
				tempArr: [], // add by 芋艿：商品列表
				loading: false,
				loadend: false,
				loadTitle: this.$t(`加载更多`),
				page: 1,
				limit: 10,
				cid: 0, //一级分类
				sid: 0, //二级分类
				isAuto: false, //没有授权的不会自动授权
				isShowAuth: false, //是否隐藏授权
				attr: {
          cartAttr: false,
          productAttr: [], // 属性数组，结构为：id = 属性编号；name = 属性编号的名字；values[].id = 属性值的编号，values[].name = 属性值的名字；index = 选中的属性值的名字
          productSelect: {} // 选中的 SKU
				},
        productValue: [], //系统属性; TODO 芋艿：默认应该是 {}, key 是属性名的名字，使用 , 拼接
        attrValue: '', //已选属性
        storeName: '', //多属性产品名称 TODO 芋艿：这个作用是啥？？
				id: 0,
				cartData: {
					cartList: [],
					iScart: false // 是否展示购物车
				},
				cartCount: 0,
        cartCountMap: {}, // 购物车数量 Map，key 为 SPU ID，value 为数量
				totalPrice: 0.00,
				is_vip: 0, //是否是会员
				cart_num: 0,
				storeInfo: {}
			}
		},
		mounted() {
			let that = this;
			// 获取设备宽度
			uni.getSystemInfo({
				success(e) {
					that.isWidth = e.windowWidth / 5
				}
			});
		},
		methods: {
			jumpIndex() {
				this.$emit('jumpIndex')
			},
			// 生成订单；
			subOrder: function() {
				let that = this,
					list = that.cartData.cartList,
					ids = [];
				if (list.length) {
					list.forEach(item => {
						ids.push(item.id)
					});
					uni.navigateTo({
						url: '/pages/goods/order_confirm/index?cartId=' + ids.join(',')
					});
					that.cartData.iScart = false;
				} else {
					return that.$util.Tips({
						title: this.$t(`请选择产品`)
					});
				}
			},
			// 计算总价；
			getTotalPrice: function() {
				let that = this,
					list = that.cartData.cartList,
					totalPrice = 0.00;
				list.forEach(item => {
					if (item.sku) {
            // TODO 芋艿：vip 价格
						totalPrice = that.$util.$h.Add(totalPrice, that.$util.$h.Mul(item.count, item.sku.price));
					}
				})
				that.$set(that, 'totalPrice', totalPrice);
			},
			ChangeSubDel: function(event) {
				let that = this,
					list = that.cartData.cartList,
					ids = [];
				list.forEach(item => {
					ids.push(item.id)
				});
				TradeCartApi.deleteCart(ids).then(res => {
					that.$set(that.cartData, 'cartList', []);
					that.cartData.iScart = false;
					that.totalPrice = 0.00;
					that.page = 1;
					that.loadend = false;
					that.tempArr = [];
					that.productslist();
					that.getCartNum();
				})
			},
			ChangeOneDel: function(id, index) {
				let that = this,
					list = that.cartData.cartList;
        TradeCartApi.deleteCart([id]).then(res => {
					list.splice(index, 1);
					if (!list.length) {
						that.cartData.iScart = false;
						that.page = 1;
						that.loadend = false;
						that.tempArr = [];
						that.productslist();
					}
					that.getCartNum();
				})
			},
			getCartList(iSshow) {
				let that = this;
        TradeCartApi.getCartList().then(res => {
          // 处理购物车项的状态
          const validList = res.data.validList;
          for (let index in validList) {
            let sku = validList[index].sku;
            if (sku && sku.stock > 0) {
              validList[index].canChecked = true; // 是否可选中：是
            } else {
              validList[index].canChecked = false; // 是否可选中：否
            }
          }

          // 设置变量
					that.$set(that.cartData, 'cartList', validList);
					if (validList.length) {
						that.$set(that.cartData, 'iScart', iSshow ? false : !that.cartData.iScart);
					} else {
						that.$set(that.cartData, 'iScart', false);
					}

          // 计算价格
					that.getTotalPrice();
				})
			},
			closeList(e) {
				this.$set(this.cartData, 'iScart', e);
				this.page = 1;
				this.loadend = false;
				this.tempArr = [];
				this.productslist();
			},
			getCartNum: function() {
				let that = this;
        // 购物车总数量
        TradeCartApi.getCartCount().then(res => {
					that.cartCount = res.data;
					that.$refs.d_goodClass.addIng = false
				});
        // 购物车数量（基于商品）
        TradeCartApi.getCartCountMap().then(res => {
          that.cartCountMap = res.data;
        });
			},
			onMyEvent: function() {
				this.$set(this.attr, 'cartAttr', false);
			},
			/**
			 * 默认选中属性
			 */
			DefaultSelect: function() {
				let productAttr = this.attr.productAttr;
        // 获得选中的属性值的名字，例如说 "黑色,大"，则 value = ["黑色", "大"]
        let value = [];
				for (let key in this.productValue) {
					if (this.productValue[key].stock > 0) {
						value = this.attr.productAttr.length ? key.split(",") : [];
						break;
					}
				}
        // 使用 index 属性表示当前选中的，值为属性值的名字
        for (let i = 0; i < productAttr.length; i++) {
					this.$set(productAttr[i], "index", value[i]);
				}

				//sort();排序函数:数字-英文-汉字；
				let productSelect = this.productValue[value.join(",")];
				if (productSelect && productAttr.length) {
					this.$set(
						this.attr.productSelect,
						"store_name",
						this.storeName
					);
					this.$set(this.attr.productSelect, "picUrl", productSelect.picUrl);
					this.$set(this.attr.productSelect, "price", productSelect.price);
					this.$set(this.attr.productSelect, "stock", productSelect.stock);
					this.$set(this.attr.productSelect, "id", productSelect.id);
          this.$set(this.attr.productSelect, "cart_num", 1);
					this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
					this.$set(this, "attrValue", value.join(","));
				} else if (!productSelect && productAttr.length) {
					this.$set(
						this.attr.productSelect,
						"store_name",
						this.storeName
					);
					this.$set(this.attr.productSelect, "picUrl", this.storeInfo.picUrl);
					this.$set(this.attr.productSelect, "price", this.storeInfo.price);
					this.$set(this.attr.productSelect, "stock", 0);
					this.$set(this.attr.productSelect, "id", "");
          this.$set(this.attr.productSelect, "cart_num", 0);
					this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
					this.$set(this, "attrValue", "");
				} else if (!productSelect && !productAttr.length) {
					this.$set(
						this.attr.productSelect,
						"store_name",
						this.storeName
					);
					this.$set(this.attr.productSelect, "picUrl", this.storeInfo.picUrl);
					this.$set(this.attr.productSelect, "price", this.storeInfo.price);
					this.$set(this.attr.productSelect, "stock", this.storeInfo.stock);
					this.$set(
						this.attr.productSelect,
						"unique",
						this.storeInfo.unique || ""
					);
					this.$set(this.attr.productSelect, "cart_num", 1);
					this.$set(this, "attrValue", "");
					this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
				}
			},
			/**
			 * 属性变动赋值
			 *
			 */
			ChangeAttr: function(res) {
				let productSelect = this.productValue[res];
				if (productSelect && productSelect.stock > 0) {
					this.$set(this.attr.productSelect, "picUrl", productSelect.picUrl);
					this.$set(this.attr.productSelect, "price", productSelect.price);
					this.$set(this.attr.productSelect, "stock", productSelect.stock);
					this.$set(this.attr.productSelect, "id", productSelect.id);
					this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
					this.$set(this.attr.productSelect, "cart_num", 1);
					this.$set(this, "attrValue", res);
				} else if (productSelect && productSelect.stock === 0) {
					this.$set(this.attr.productSelect, "picUrl", productSelect.picUrl);
					this.$set(this.attr.productSelect, "price", productSelect.price);
					this.$set(this.attr.productSelect, "stock", 0);
					this.$set(this.attr.productSelect, "id", "");
					this.$set(this.attr.productSelect, 'vip_price', productSelect.vip_price);
					this.$set(this.attr.productSelect, "cart_num", 0);
					this.$set(this, "attrValue", "");
				} else {
					this.$set(this.attr.productSelect, "picUrl", this.storeInfo.picUrl);
					this.$set(this.attr.productSelect, "price", this.storeInfo.price);
					this.$set(this.attr.productSelect, "stock", 0);
					this.$set(this.attr.productSelect, "id", "");
					this.$set(this.attr.productSelect, 'vip_price', this.storeInfo.vip_price);
					this.$set(this.attr.productSelect, "cart_num", 0);
					this.$set(this, "attrValue", "");
				}
			},
			attrVal(val) {
				this.$set(this.attr.productAttr[val.indexw], 'index', this.attr.productAttr[val.indexw].values[val
					.indexn]);
			},
			/**
			 * 购物车手动填写
			 *
			 */
			iptCartNum: function(e) {
				this.$set(this.attr.productSelect, 'cart_num', e);
			},
			onLoadFun() {},
			// 产品列表
			productslist: function() {
				let that = this;
				if (that.loadend) return;
				if (that.loading) return;
				that.loading = true;
				that.loadTitle = '';
        ProductSpuApi.getSpuPage({
          pageNo: that.page,
          pageSize: that.limit,
					categoryId: that.sid > 0 ? that.sid  : that.cid
				}).then(res => {
          // 设置结果
          let list = res.data.list;
          list[0].cart_button = true // TODO 芋艿：临时调试
          let loadend = list.length < that.limit;
					that.tempArr = that.$util.SplitArray(list, that.tempArr);
					that.$set(that, 'tempArr', that.tempArr);
          // 设置加载状态
          that.loading = false;
					that.loadend = loadend;
					that.loadTitle = loadend ? that.$t(`没有更多内容啦~`) : that.$t(`加载更多`);
					that.page = that.page + 1;
				}).catch(err => {
          that.loading = false;
          that.loadTitle = that.$t(`加载更多`);
				});
			},

			// 改变单属性购物车
			ChangeCartNumDan(changeValue, index, item) {
				let num = this.tempArr[index];
				let stock = this.tempArr[index].stock;
				this.ChangeCartNum(changeValue, num, stock, 0, item.id);
			},
			// 改变多属性购物车
			ChangeCartNumDuo(changeValue) {
				//获取当前变动属性
				let productSelect = this.productValue[this.attrValue];
				//如果没有属性,赋值给商品默认库存
				if (productSelect === undefined && !this.attr.productAttr.length)
					productSelect = this.attr.productSelect;
				//无属性值即库存为0；不存在加减；
				if (productSelect === undefined) return;
				let stock = productSelect.stock || 0;
				let num = this.attr.productSelect;
				this.ChangeCartNum(changeValue, num, stock, 1, this.id);
			},
			// 已经加入购物车时的购物加减；
			ChangeCartList(changeValue, index) {
				let list = this.cartData.cartList;
				let num = list[index];
				let stock = list[index].stock;
				this.ChangeCartNum(changeValue, num, stock, 0, num.product_id, index, 1);
				if (!list.length) {
					this.cartData.iScart = false;
					this.page = 1;
					this.loadend = false;
					this.tempArr = [];
					this.productslist();
				}
			},
			// 购物车加减计算函数
			ChangeCartNum(changeValue, num, stock, isDuo, id, index, cart) {
        // 情况一：添加
				if (changeValue) {
					num.count++;
          // 1.1 库存不足
					if (num.count > stock) {
						if (isDuo) {
							this.$set(this.attr.productSelect, "count", stock ? stock : 1);
							this.$set(this, "count", stock ? stock : 1);
						} else {
							num.count = stock ? stock : 0;
							this.$set(this, 'tempArr', this.tempArr);
							this.$set(this.cartData, 'cartList', this.cartData.cartList);
						}
						return this.$util.Tips({
							title: this.$t(`该产品没有更多库存了`)
						});
					// 1.2 库存充足
          } else {
						if (!isDuo) {
							if (cart) {
								this.goCat(0, id, 1, 1, num.sku.id);
								this.getTotalPrice();
							} else {
                // TODO 芋艿：这里要干啥
                debugger
								this.goCat(0, id, 1);
							}
						}
					}
        // 情况二：减少
				} else {
					num.count--;
					if (num.count === 0) {
						this.cartData.cartList.splice(index, 1);
					}
					if (num.count < 0) {
						if (isDuo) {
							this.$set(this.attr.productSelect, "count", 1);
							this.$set(this, "count", 1);
						} else {
							num.count = 0;
							this.$set(this, 'tempArr', this.tempArr);
							this.$set(this.cartData, 'cartList', this.cartData.cartList);
						}
					} else {
						if (!isDuo) {
							if (cart) {
								this.goCat(0, id, 0, 1, num.sku.id);
								this.getTotalPrice();
							} else {
                // TODO 芋艿：这里要干啥
                debugger
								this.goCat(0, id, 0);
							}
						}
					}
				}
			},
			// 多规格加入购物车；
			goCatNum() {
				this.goCat(1, this.id, 1);
			},
			/**
			 * 加入购物车
       *
       * @param duo 通过 SKU 选择多规格的商品
       * @param cart 是否来自购物车列表
       * @param type 1- 增加；0 - 减少
			 */
			goCat: function(duo, id, type, cart, unique) {
				let that = this;
				if (duo) {
					let productSelect = that.productValue[this.attrValue];
					// 如果有属性,没有选择,提示用户选择
					if (that.attr.productAttr.length && productSelect === undefined) {
						return that.$util.Tips({
							title: that.$t(`该产品没有更多库存了`)
						});
					}
					if (that.attr.productSelect.cart_num <= 0) {
						return that.$util.Tips({
							title: that.$t(`最少添加 1 件商品`)
						});
					}
				}
				// let q = {
				// 	product_id: id,
				// 	num: duo ? that.attr.productSelect.cart_num : 1,
				// 	type: type,
				// 	unique: duo ? that.attr.productSelect.unique : cart ? unique : ""
				// };
        let q = {
          count: duo ? that.attr.productSelect.cart_num : type ? 1 : -1,
          skuId: duo ? that.attr.productSelect.id : cart ? unique : "",
          addStatus: true
        };
        TradeCartApi.addCart(q)
					.then(function(res) {
						if (duo) {
							that.attr.cartAttr = false;
							that.$util.Tips({
								title: that.$t(`添加成功`)
							});
							// that.page = 1;
							// that.loadend = false;
							that.tempArr.forEach((item, index) => {
								if (item.id === that.id) {
									let arrtStock = that.attr.productSelect.stock
									let objNum = parseInt(item.cart_num) + parseInt(that.attr.productSelect.cart_num);
                  // TODO 芋艿：为什么这里超过要重置？不应该出现这种情况吧
									item.cart_num = objNum > arrtStock ? arrtStock : objNum
								}
							})
							// that.productslist();
						}
						that.getCartNum();
						if (!cart) {
							that.getCartList(1);
						}
					}).catch(err => {
						return that.$util.Tips({
							title: err
						});
					});
			},
			// 点击默认单属性购物车
			goCartDan(item, index) {
				if (!this.isLogin) {
					this.getIsLogin();
				} else {
          item.cart_button = true // TODO 芋艿：cart_button 的逻辑？？？先临时强制设置下
          if (!item.cart_button) {
						goShopDetail(item, this.uid).then(res => {
							uni.navigateTo({
								url: `/pages/goods_details/index?id=${item.id}`
							});
						});
						return
					}
					this.tempArr[index].cart_num = 1;
					this.$set(this, 'tempArr', this.tempArr);
					this.goCat(0, item.id, 1);
				}
			},
			goCartDuo(item) {
				if (!this.isLogin) {
					this.getIsLogin();
				} else {
          item.cart_button = true // TODO 芋艿：cart_button 的逻辑？？？先临时强制设置下
					if (!item.cart_button) {
						goShopDetail(item, this.uid).then(res => {
							uni.navigateTo({
								url: `/pages/goods_details/index?id=${item.id}`
							});
						});
						return
					}
					uni.showLoading({
						title: this.$t(`正在加载中`)
					});
					this.storeName = item.store_name;
					this.getAttrs(item.id);
					this.$set(this, 'id', item.id);
					this.$set(this.attr, 'cartAttr', true);
				}
			},
			getIsLogin() {
				toLogin();
			},
			// 商品详情接口；
			getAttrs(id) {
				let that = this;
        ProductSpuApi.getSpuDetail(id).then(res => {
					uni.hideLoading();
          let storeInfo = res.data;
          let productAttr = convertProductPropertyList(res.data.skus);
          let productValue = convertProductSkuMap(res.data.skus);
          // 设置变量
          that.$set(that.attr, 'productAttr', productAttr);
          that.$set(that, 'productValue', productValue);
          that.$set(that, 'is_vip', storeInfo.is_vip); // TODO 芋艿：是否 vip
					that.$set(that, 'storeInfo', storeInfo);
					that.DefaultSelect();
				})
			},
			// 去详情页
			goDetail(item) {
				if (!this.isLogin) {
					toLogin();
				} else {
					goShopDetail(item, this.uid).then(res => {
						uni.navigateTo({
							url: `/pages/goods_details/index?id=${item.id}`
						});
					});
				}
			},
			openTap() {
				this.iSlong = false
			},
			closeTap() {
				this.iSlong = true
			},
			getAllCategory: function(type) {
				let that = this;
				if (type || !uni.getStorageSync('CAT2_DATA')) {
          ProductCategoryApi.getCategoryList().then(res => {
            // 设置到变量
            let data = handleTree(res.data, 'id');
            // 设置到缓存
						uni.setStorageSync('CAT2_DATA', data)
            // 处理字段
						data.forEach(item => {
							item.children.unshift({
								'id': 0,
								'name': that.$t(`全部`)
							})
						})
						that.categoryTitle = data[0].name;
						that.cid = data[0].id;
						that.sid = 0;
						that.navActive = 0;
						that.tabClick = 0;
						that.categoryList = data;
						that.categoryErList = res.data[0].children ? res.data[0].children : [];
						that.page = 1;
						that.loadend = false;
						that.tempArr = [];
						that.productslist();
					})
				} else {
					let data = uni.getStorageSync('CAT2_DATA')
					data.forEach(item => {
						item.children.unshift({
							'id': 0,
							'name': that.$t(`全部`)
						})
					})
					that.categoryTitle = data[0].name;
					that.cid = data[0].id;
					that.sid = 0;
					that.navActive = 0;
					that.tabClick = 0;
					that.categoryList = data;
					that.categoryErList = data[0].children ? data[0].children : [];
					that.page = 1;
					that.loadend = false;
					that.tempArr = [];
					that.productslist();
				}

			},
			tapNav(index, item) {
				let list = this.categoryList[index];
				this.navActive = index;
				this.categoryTitle = list.name;
				this.categoryErList = item.children ? item.children : [];
				this.tabClick = 0;
				this.tabLeft = 0;
				this.cid = list.id;
				this.sid = 0;
				this.page = 1;
				this.loadend = false;
				this.tempArr = [];
				this.productslist();
			},
			// 导航栏点击
			longClick(index) {
				if (this.categoryErList.length > 3) {
					this.tabLeft = (index - 1) * (this.isWidth + 6) //设置下划线位置
				}
				this.tabClick = index; //设置导航点击了哪一个
				this.iSlong = true;
				this.sid = this.categoryErList[index].id;
				this.page = 1;
				this.loadend = false;
				this.tempArr = [];
				this.productslist();
			},
		}
	}
</script>

<style lang="scss">
	.scroll-Y {
		height: 100vh;
	}

	page {
		background-color: #fff;
	}

	/deep/.product-window.joinCart {
		z-index: 999;
	}

	::-webkit-scrollbar {
		width: 0;
		height: 0;
		color: transparent;
		display: none;
	}

	.goodCate {
		.mask {
			z-index: 99;
		}

		/deep/.attrProduct {
			.mask {
				z-index: 100;
			}
		}

		.header {
			position: fixed;
			height: 128rpx;
			background-color: #fff;
			top: 0;
			left: 0;
			width: 100%;
			z-index: 99;
			border-bottom: 1px solid #F0F0F0;

			.pageIndex {
				width: 68rpx;
				height: 68rpx;
				border-radius: 50%;
				background-color: var(--view-theme);
				text-align: center;
				line-height: 68rpx;

				.iconfont {
					color: #fff;
					font-size: 30rpx;
				}
			}

			.search {
				width: 600rpx;
				height: 68rpx;
				border-radius: 36rpx;
				background-color: #F8F8F8;
				font-size: 26rpx;
				color: #ADADAD;
				margin-left: 22rpx;

				.iconfont {
					font-size: 30rpx;
					margin: 4rpx 16rpx 0 0;
				}
			}
		}

		.conter {
			margin-top: 128rpx;
			height: 100vh;
			background-color: #fff;

			.aside {
				position: fixed;
				width: 23%;
				left: 0;
				bottom: 100rpx;
				top: 0;
				background-color: #f7f7f7;
				overflow-y: auto;
				overflow-x: hidden;
				margin-top: 128rpx;
				z-index: 99;

				.item {
					height: 100rpx;
					width: 100%;
					font-size: 26rpx;
					color: #424242;

					&.on {
						background-color: #fff;
						width: 100%;
						text-align: center;
						color: var(--view-theme);
						font-weight: 500;
						position: relative;

						&::after {
							content: "";
							position: absolute;
							width: 6rpx;
							height: 46rpx;
							background: var(--view-theme);
							border-radius: 0 4rpx 4rpx 0;
							left: 0
						}
					}
				}
			}

			.wrapper {
				margin-top: 104rpx;
				width: 77%;
				float: right;
				background-color: #fff;
				padding-bottom: 100rpx;

				.bgcolor {
					width: 100%;
					background-color: #fff;
				}

				.goodsList {
					margin-top: 0 !important;
				}

				.mask {
					z-index: 9;
				}

				.longTab {
					width: 65%;
					position: fixed;
					top: 0;
					margin-top: 128rpx;
					height: 100rpx;
					z-index: 99;
					background-color: #fff;

					.longItem {
						height: 44rpx;
						display: inline-block;
						line-height: 44rpx;
						text-align: center;
						font-size: 26rpx;
						overflow: hidden;
						text-overflow: ellipsis;
						white-space: nowrap;
						color: #989898;
						background-color: #F7F7F7;
						border-radius: 22rpx;
						margin-left: 12rpx;

						&.click {
							font-weight: bold;
							background-color: var(--view-minorColorT);
							color: var(--view-theme);
						}
					}

					.underlineBox {
						height: 3px;
						width: 20%;
						display: flex;
						align-content: center;
						justify-content: center;
						transition: .5s;

						.underline {
							width: 33rpx;
							height: 4rpx;
							background-color: white;
						}
					}
				}

				.openList {
					width: 12%;
					height: 100rpx;
					background-color: #fff;
					line-height: 100rpx;
					padding-left: 30rpx;
					position: fixed;
					right: 0;
					top: 128rpx;
					z-index: 99;

					.iconfont {
						font-size: 22rpx;
						color: #989898;
					}
				}

				.downTab {
					width: 77%;
					position: fixed;
					top: 0;
					margin-top: 128rpx;
					z-index: 99;
					background-color: #fff;
					right: 0;

					.title {
						height: 100rpx;
						font-size: 26rpx;
						color: #ADADAD;
						padding-left: 20rpx;

						.closeList {
							width: 90rpx;
							height: 100%;
							line-height: 100rpx;
							padding-left: 30rpx;
							transform: rotate(180deg);

							.iconfont {
								font-size: 22rpx;
								color: #989898;
							}
						}
					}

					.children {
						max-height: 500rpx;
						overflow-x: hidden;
						overflow-y: auto;
						padding-bottom: 20rpx;

						.item {
							height: 60rpx;
							background-color: #F7F7F7;
							border-radius: 30rpx;
							line-height: 60rpx;
							padding: 0 15rpx;
							margin: 0 0 20rpx 20rpx;
							width: 165rpx;
							text-align: center;

							&.click {
								font-weight: bold;
								background-color: var(--view-minorColorT);
								color: var(--view-theme);
							}
						}
					}
				}

				.goodsList {
					margin-top: 228rpx;
					padding: 0 30rpx 0 20rpx;

					/deep/.item {
						margin-bottom: 33rpx !important;

						.pictrue {
							height: 216rpx;
						}

						.text {
							font-size: 26rpx;
						}

						.bottom {
							.sales {
								.money {
									font-size: 34rpx;

									text {
										font-size: 26rpx;
									}
								}
							}

							.cart {
								.pictrue {
									width: 50rpx;
									height: 50rpx;
								}
							}
						}
					}
				}
			}
		}

		.footer {
			position: fixed;
			left: 0;
			bottom: 0;
			width: 100%;
			background-color: #fff;
			box-shadow: 0px -3rpx 16rpx rgba(36, 12, 12, 0.05);
			z-index: 101;
			padding: 0 30rpx;
			box-sizing: border-box;
			height: 100rpx;

			.cartIcon {
				width: 96rpx;
				height: 96rpx;
				border-radius: 50%;
				position: relative;
				margin-top: -36rpx;

				.iconfont {
					font-size: 115rpx;
					margin-top: -5px;
					color: var(--view-theme);
				}

				&.noCart {
					.iconfont {
						color: #CBCBCB;
					}
				}

				.num {
					background-color: var(--view-priceColor);
					min-width: 12rpx;
					color: #fff;
					border-radius: 15px;
					position: absolute;
					right: -6rpx;
					top: -10rpx;
					font-size: 22rpx;
					padding: 0 10rpx;
					height: 34rpx;
					line-height: 34rpx;
				}
			}

			.money {
				color: var(--view-priceColor);
				font-size: 28rpx;
				font-weight: bold;

				.num {
					font-size: 42rpx;
				}

				.bnt {
					width: 222rpx;
					height: 76rpx;
					background: var(--view-theme);
					border-radius: 46rpx;
					line-height: 76rpx;
					text-align: center;
					color: #fff;
					margin-left: 24rpx;
				}
			}
		}
	}
</style>
